# test03_hashlib.py  计算大文件md5值
import hashlib
# 1.读取文件(4K, 也可以是4K的倍数, while True)
# 2.每读取一点数据，就计算一次md5值
# 3.文件读取完毕，md5值计算完毕
def file_md5(fname):  # fname: 文件路径
    m = hashlib.md5()
    with open(fname, mode="rb") as fr:
        while True:
            data = fr.read(1024*16)  # 16KB
            if len(data) == 0:  # 文件读取完毕
                break
            m.update(data)  # 计算一次md5值
    return m.hexdigest()
if __name__ == '__main__':
    print(file_md5("/usr/bin/ls"))  # ace003
    # md5sum /usr/bin/ls  # ace003